package com.czp.job.mapper;

import java.util.List;

import org.apache.ibatis.session.RowBounds;

import com.czp.job.model.Job;
import com.czp.job.model.RelationJob;
import com.czp.job.model.RelationPerson;

/**
 * 【环 境】：J2SE 1.7
 * @author   柴志鹏	CHAIZP@GMAIL.COM
 * @version  version 1.0
 * @since    2014-7-17
 */
public interface IJobMapper {
	
	/** 
	 * 【描 述】：查询岗位信息
	 * @param Job
	 * @param RowBounds(start,limit)
	 * @return 岗位集合
	 * @throws Exception
	 */
	List<Job> queryJobList(Job job, RowBounds bounds) throws Exception;
	
	/** 
	 * 【描 述】：查询岗位数量
	 * @param Job
	 * @return 岗位数量
	 * @throws Exception
	 */
	int getJobRecords(Job job) throws Exception;
	
	/** 
	 * 【描 述】：添加岗位
	 * @param Job(岗位名称,启用状态,备注)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int insertJob(Job job) throws Exception;
	
	/** 
	 * 【描 述】：修改岗位信息
	 * @param Job(岗位Id,岗位名称,启用状态,备注)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int updateJob(Job job) throws Exception;
	
	/** 
	 * 【描 述】：删除岗位信息
	 * @param Job(岗位Id)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int deleteJob(Job job) throws Exception;

	/** 
	 * 【描 述】：通过岗位Id查询下属信息
	 * @param jobId岗位Id
	 * @return 下属信息集合
	 * @throws Exception
	 */
	List<RelationJob> querySubordinateByJobId(String jobId) throws Exception;
	
	/** 
	 * 【描 述】：根据岗位Id查询人员信息
	 * @param jobId岗位Id
	 * @return 人员集合
	 * @throws Exception
	 */
	List<RelationPerson> queryPersonByJobId(String jobId) throws Exception;
	
	/** 
	 * 【描 述】：取消下属岗位
	 * @param RelationJob(Id)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int deleteRelationJob(RelationJob relJob) throws Exception;
	
	/** 
	 * 【描 述】：删除关联人员信息
	 * @param RelationPerson(Id)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int deleteRelationPerson(RelationPerson relPerson) throws Exception;
	
	/** 
	 * 【描 述】：查询全部与被选中的人员信息
	 * @param RelationPerson(岗位Id,人员名称)
	 * @return 人员集合
	 * @throws Exception
	 */
	List<RelationPerson> getSelectedPersonList(RelationPerson relPerson) throws Exception;
	
	/** 
	 * 【描 述】：查询全部与被选中人员数量
	 * @param RelationPerson(岗位Id,人员姓名)
	 * @return 数量
	 * @throws Exception
	 */
	int getSelectedPersonCount(RelationPerson relPerson) throws Exception;
	
	/** 
	 * 【描 述】：通过岗位Id与人员Id查询指定关联人员是否存在
	 * @param RelationPerson(岗位Id，人员Id)
	 * @return 数量
	 * @throws Exception
	 */
	int matchAddRelationPerson(RelationPerson relPerson) throws Exception;
	
	/** 
	 * 【描 述】：添加一条人员关联信息
	 * @param RelationPerson(岗位Id，人员Id)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int insertRelationPerson(RelationPerson relPerson) throws Exception;
	
	/** 
	 * 【描 述】：获取可选岗位信息
	 * @param jobId岗位Id
	 * @return 岗位集合
	 * @throws Exception
	 */
	List<Job> getOptionalJob(String jobId) throws Exception; 
	
	/** 
	 * 【描 述】：获取已选岗位信息
	 * @param jobId岗位Id
	 * @return 岗位集合
	 * @throws Exception
	 */
	List<Job> getSelectedJob(String jobId) throws Exception;
	
	/** 
	 * 【描 述】：添加一条下属岗位信息
	 * @param RelationJob(岗位Id， 下属Id)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int insertRelationJob(RelationJob relJob) throws Exception ;
	
	/** 
	 * 【描 述】：通过岗位Id与下属Id查询指定关联下属是否存在
	 * @param RelationJob(岗位Id，下属Id)
	 * @return 数量
	 * @throws Exception
	 */
	int matchAddRelationJob(RelationJob relJob) throws Exception;
	
	/** 
	 * 【描 述】：删除一条下属岗位信息
	 * @param RelationJob(岗位Id， 下属Id)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int deleteRelationJobItemSelect(RelationJob relJob) throws Exception;
	
}

